package com.db.williamchart.data.configuration;

import com.db.williamchart.data.AxisType;
import com.db.williamchart.data.Paddings;
import com.db.williamchart.data.Scale;

import java.util.List;

public class LineChartConfiguration extends ChartConfiguration{

    private int width;
    private int height;
    private Paddings paddings;
    private AxisType axis;
    private float labelsSize;
    private Scale scale;
    private float fLabelsFormatter;
    private float lineThickness;
    private int pointsDrawableWidth;
    private int pointsDrawableHeight;
    private int fillColor;
    private List<Integer> gradientFillColors;
    private int clickableRadius;

    public LineChartConfiguration(int width,
                                  int height,
                                  Paddings paddings,
                                  AxisType axis,
                                  float labelsSize,
                                  Scale scale,
                                  float labelsFormatter,
                                  float lineThickness,
                                  int pointsDrawableWidth,
                                  int pointsDrawableHeight,
                                  int fillColor,
                                  List<Integer> gradientFillColors,
                                  int clickableRadius) {

        super(width,height,paddings,axis,labelsSize,scale, String.valueOf(labelsFormatter));

        this.width = width;
        this.height = height;
        this.paddings = paddings;
        this.axis = axis;
        this.labelsSize = labelsSize;
        this.scale = scale;
        this.fLabelsFormatter = labelsFormatter;
        this.lineThickness = lineThickness;
        this.pointsDrawableWidth = pointsDrawableWidth;
        this.pointsDrawableHeight = pointsDrawableHeight;
        this.fillColor = fillColor;
        this.gradientFillColors = gradientFillColors;
        this.clickableRadius = clickableRadius;
    }

    public LineChartConfiguration copy(Scale scale) {
        return new LineChartConfiguration(
                width,
                height,
                paddings,
                axis,
                labelsSize,
                scale,
                fLabelsFormatter,
                lineThickness,
                pointsDrawableWidth,
                pointsDrawableHeight,
                fillColor,
                gradientFillColors,
                clickableRadius
        );
    }

    @Override
    public int getWidth() {
        return width;
    }

    @Override
    public void setWidth(int width) {
        this.width = width;
    }

    @Override
    public int getHeight() {
        return height;
    }

    @Override
    public void setHeight(int height) {
        this.height = height;
    }

    @Override
    public Paddings getPaddings() {
        return paddings;
    }

    @Override
    public void setPaddings(Paddings paddings) {
        this.paddings = paddings;
    }

    @Override
    public AxisType getAxis() {
        return axis;
    }

    @Override
    public void setAxis(AxisType axis) {
        this.axis = axis;
    }

    @Override
    public float getLabelsSize() {
        return labelsSize;
    }

    @Override
    public void setLabelsSize(float labelsSize) {
        this.labelsSize = labelsSize;
    }

    @Override
    public Scale getScale() {
        return scale;
    }

    @Override
    public void setScale(Scale scale) {
        this.scale = scale;
    }

    public float getfLabelsFormatter() {
        return fLabelsFormatter;
    }

    public void setLabelsFormatter(float labelsFormatter) {
        this.fLabelsFormatter = labelsFormatter;
        super.setLabelsFormatter(labelsFormatter);
    }

    public float getLineThickness() {
        return lineThickness;
    }

    public void setLineThickness(float lineThickness) {
        this.lineThickness = lineThickness;
    }

    public int getPointsDrawableWidth() {
        return pointsDrawableWidth;
    }

    public void setPointsDrawableWidth(int pointsDrawableWidth) {
        this.pointsDrawableWidth = pointsDrawableWidth;
    }

    public int getPointsDrawableHeight() {
        return pointsDrawableHeight;
    }

    public void setPointsDrawableHeight(int pointsDrawableHeight) {
        this.pointsDrawableHeight = pointsDrawableHeight;
    }

    public int getFillColor() {
        return fillColor;
    }

    public void setFillColor(int fillColor) {
        this.fillColor = fillColor;
    }

    public List<Integer> getGradientFillColors() {
        return gradientFillColors;
    }

    public void setGradientFillColors(List<Integer> gradientFillColors) {
        this.gradientFillColors = gradientFillColors;
    }

    public int getClickableRadius() {
        return clickableRadius;
    }

    public void setClickableRadius(int clickableRadius) {
        this.clickableRadius = clickableRadius;
    }
}
